package cn.loveq.android.widget;

import android.app.Activity;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.widget.RemoteViews;
import cn.loveq.android.MyTestActivity;
import cn.loveq.android.R;

//AppWidgetProvider 是 BroadcastReceiver 的子类，本质是个 广播接收器，它专门用来接收来自 Widget组件的各种请求（用Intent传递过来），
//所以如果让我给他起名的话 我会给他命名为AppWidgetReceiver,每一个Widget都要有一个AppWidgetProvider.
public class WidgetProvider extends AppWidgetProvider {

	private static RemoteViews rv;

	// 每个请求都会传递给onReceive方法，该方法根据Intent参数中的action类型来决定自己处理还是分发给下面四个特殊的方法。
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		super.onReceive(context, intent);

	}

	// 如果Widget自动更新时间到了、或者其他会导致Widget发生变化的事件发生，或者说Intent的值是android.appwidget.action.APPWIDGET_UPDATE，
	// 那么会调用onUpdate，下面三个方法类似
	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
		// TODO Auto-generated method stub
		final int N = appWidgetIds.length;
		for (int i = 0; i < N; i++) {
			int appWidgetId = appWidgetIds[i];
			System.out.println("appWidgetId = " + appWidgetId);
			updateAppWidget(context, appWidgetManager, appWidgetId);
		}
	}

	// 当一个App Widget从桌面上删除时调用
	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		super.onDeleted(context, appWidgetIds);
	}

	// 当这个App Widget第一次被放在桌面上时调用(同一个App Widget可以被放在桌面上多次，所以会有这个说法)
	@Override
	public void onEnabled(Context context) {
		super.onEnabled(context);

	}

	// 当这个App Widget的最后一个实例被从桌面上移除时会调用该方法。
	@Override
	public void onDisabled(Context context) {
		super.onDisabled(context);
	}

	public static void updateAppWidget(Context context, AppWidgetManager appWidgeManger, int appWidgetId) {
		rv = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);

		SharedPreferences shared = context.getSharedPreferences("settinginfo", Activity.MODE_PRIVATE);
		// util.index = settings.getInt("imageState", 0);
		// mEditText.setText(settings.getString("heart", ""));
		rv.setTextViewText(R.id.TextView01,"test");
		//rv.setImageViewResource(R.id.ImageView01, util.image[shared.getInt("imageState", 0)]);

		Intent intentClick = new Intent(context, MyTestActivity.class);
		PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intentClick, 0);
		rv.setOnClickPendingIntent(R.id.appwidget_layout, pendingIntent);
		appWidgeManger.updateAppWidget(appWidgetId, rv);
	}

}